package com.iaz.tech.tools.mq;

import java.util.List;
import java.util.UUID;

import com.iaz.tech.tools.message.IMessageAble;

/**
 * 消息队列成员Bine, 用来记录消息
 * 
 * @author Zhao Limin
 * @version 2022.08.01
 * 
 * IMessageSectionAble   该接口用于神经元之间通信用。 
 *                       主要避免消息传递过程中， 消息的重复传递。
 */
public interface IMessageSectionAbility {
    /**       
     * Message 都默认采用ZIP 压缩，用于节约内存
     */
    List<IMessageAble> getMessages();
    /**
     * 根据Neuron ID 读取相应消息队列
     * @param neuronID
     * @return
     */
    List<IMessageAble> getMessages(UUID neuronID );

    /**
     * 消息来源UID
     * @param neuronID   神经元ID
     * @param newmessage 消息, 需要存储过程进行
     * @return
     */
    void pushMessage(UUID neuronID, IMessageAble newmessage);
    /**
     * 获得消息生成的时间戳
     * @return
     */
    long toTimestamp();
}